package com.hb.core.pojo;

import cn.hutool.json.JSONObject;
import cn.hutool.json.JSONUtil;
import lombok.Getter;
import lombok.Setter;
import org.fzzn.core.component.treebuilder.entity.TreeNode;

import java.math.BigDecimal;
import java.util.Map;

/**
 * 操作台按钮树形结构实体
 * 本类中属性来自前端要求
 *
 * @author zhaojk
 */
@Setter
@Getter
public class ConsoleItemTreeEntity extends TreeNode<Long> {
    /**
     * 显示名称
     */
    private String fullName;
    /**
     * 不知道是啥
     */
    private String enCode;
    /**
     * 是否有子集数据
     */
    private Boolean hasChildren;
    /**
     * 页面跳转地址
     */
    private String urlPage;
    /**
     * 跳转页面打开方式
     */
    private String linkTarget;
    /**
     * 排序号
     */
    private BigDecimal sortCode;
    /**
     * 其他属性
     */
    private JSONObject propertyJson;

    /**
     * 将按钮属性复制到当前类中TreeEntity
     *
     * @param source      com.hb.core.pojo.center.sys.entity.XXX 实体对象
     * @param extMappings 字段映射关系
     * @param withAttr    是否添加扩展属性字段
     */
    @Override
    public void copyFieldFrom(Object source, Map<String, String> extMappings, boolean withAttr) {
        if (source == null) {
            return;
        }

        JSONObject consoleItemJSON = JSONUtil.parseObj(source);

        this.setId(consoleItemJSON.getLong("id"));
        consoleItemJSON.remove("id");

        this.setParentId(consoleItemJSON.getLong("parentId"));
        consoleItemJSON.remove("parentId");

        this.setFullName(consoleItemJSON.getStr("operaName"));
        consoleItemJSON.remove("operaName");

        this.setEnCode(consoleItemJSON.getStr("showStatusLogic"));
        consoleItemJSON.remove("showStatusLogic");

        this.setUrlPage(consoleItemJSON.getStr("pageUrl"));
        consoleItemJSON.remove("pageUrl");

        this.setLinkTarget("_self");

        this.setSortCode(consoleItemJSON.getBigDecimal("sortCode"));
        consoleItemJSON.remove("sortCode");
        super.setSort(null);

        this.setPropertyJson(consoleItemJSON);
    }

}
